home *** CD-ROM | disk | FTP | other *** search
- 80 OPEN1,4
- 90 SYS9*4096
- 100 *=49152
- 110 ;:;:;TRACE / SINGLE STEP FUER C64 9.84
- 120 ;:; +DISASSEMBLER / EDITOR
- 130 ;:; JUERGEN (null)EBEL:;:; 8 MUENCHEN 82:;:; GROSCHENWEG 19:;:;
- 140 ;:; TEL. 089 / 432709:;:;
- 150 .OPT OO,P
- 160 IRQVEK =$314:STACK =$100:COL =55296;HINTERGRUNDFARBE
- 170 SCREEN =1024:READY =$A474-1
- 180 CIA =$DC00:TL =CIA+6;TIMERWERTE:TH =CIA+7:TAST =$EA87;TASTATURROUT.
- 190 DDRB =$DD03
- 200 ICR =CIA+13;INTERR.CONTROLREG.:CRB =CIA+15:TSTART =*+$0500
- 210 NOP:LDA #0:STA DISON:BEQ (null)
- 220 LDA #255:STA DISON
- 230 (null) SEI:LDA #<TRACE:STA IRQVEK;IRQ VEKTOR
- 240 LDA #>TRACE:STA IRQVEK+1;AUF TRACE
- 250 LDA #130:STA ICR;TIMER B INTERRUPT ERLAUBT:LDX #255:TXS;STACK INITIAL.
- 260 LDA #>READY;STACK FUER TRACE:PHA;VORBEREITEN:LDA #<READY:PHA
- 270 LDA #$C0;PC=$C000:PHA:LDA #0:PHA
- 280 LDA #32:PHA:LDA #0:PHA:PHA:PHA
- 290 TRACE CLD:LDY #0:TITEL LDA TEXT,Y;KOPFZEILE
- 300 JSR PRIZEI;AUSGEBEN:CPY #40:BNE TITEL
- 310 TSX:LDA STACK+6,X;PC AUSGEBEN:STA TMP+3:JSR PRBYTE
- 320 LDA STACK+5,X:STA TMP+4:JSR PRBYTE
- 330 LDA DISON:BMI DISOFF
- 340 JSR DISAS:DISOFF JSR SPACE:TXA;SP AUSGEBEN
- 350 JSR PRBYTE
- 360 REGISTER JSR SPACE:LDA STACK+1,X:JSR PRBYTE
- 370 INX:CPY #56:BCC REGISTER:JSR SPACE
- 380 LDA STACK+1,X;PROZESSORSTATUS-FLAGS ANZEIGEN
- 390 LDX #8
- 400 CONT1 ASL:PHA:LDA #94;PFEIL:BCS FLSETZ
- 410 LDA #45;MINUS:FLSETZ JSR PRIZEI:PLA
- 420 DEX:BNE CONT1:JSR SPACE:LDX #8;USERPORT ANZEIGEN
- 430 LDA DDRB-2
- 440 CONT2 ASL:PHA:LDA #$31:BCS USETZ
- 450 LDA #$30:USETZ JSR PRIZEI:PLA
- 460 DEX:BNE CONT2:LDX #8;DATENRICHTUNGSREGISTER:LDA DDRB;LADEN
- 470 CONT3 ASL SCREEN+65,X:LSR;ENTSPRECHENDE BITS DER ANZEIGE
- 480 ROR SCREEN+65,X;WERDEN INVERTIERT:DEX:BNE CONT3
- 490 WAIT JSR GET;WARTET AUF:CMP #23;F1,F3,F5,F7 ODER X:BEQ EXIT
- 500 CMP #5:BEQ FAST;UND VERZWEIGT ENTSPRECHEND
- 510 CMP #6:BEQ SLOW
- 520 CMP #3:BEQ WAITL:CMP #4:BNE WAIT
- 530 JMP SET
- 540 WAITL JSR GET;WARTET BIS F7 WIEDER LOSGELASSEN:CMP #64:BNE WAITL
- 550 FAST LDA #$16:STA TL
- 560 LDA #0;TIMER LADEN:STA TH:LDA #17:STA CRB;UND STARTEN:LDA $DC0D;ENDE IRQ
- 570 PLA:TAY:PLA:TAX
- 580 PLA:RTI
- 590 SLOW LDX #0:CONT4 DEX:BNE CONT4:DEY:BNE CONT4
- 600 BEQ FAST
- 610 EXIT LDA #2;X TASTE:STA ICR:LDA #$31:STA IRQVEK;SETZT IRQ VEKTOR AUF
- 620 LDA #$EA;ALTEN WERT:STA IRQVEK+1:LDA #4:STA $028B:LDA #16;REPEAT KORRIG.
- 630 STA $028C:CLI:JMP READY+1;SPRUNG ZU BASIC
- 640 PRBYTE PHA;1 BYTE ALS 2 HEXZ. AUF SCHIRM:STX TMP:LSR:LSR:LSR:LSR
- 650 TAX:LDA HEX,X:JSR PRIZEI
- 660 PLA:AND #$0F:TAX:LDA HEX,X:LDX TMP
- 670 JMP PRIZEI
- 680 SPACE LDA #$20
- 690 PRIZEI AND #$3F;WEGEN BILDSCHIRMCODE
- 700 STA SCREEN,Y:LDA #1;FARBE SETZEN:STA COL,Y:INY:RTS
- 710 GET JSR TAST;HOLT TASTENCODE:LDA $CB:RTS
- 720 SET JSR DISAS:LDY #40;F1 TASTE
- 730 START LDA SCREEN,Y:ORA #128:STA SCREEN,Y:STY TMP
- 740 JSR ZEICHHOL;EINGABEROUT.:LDY TMP:CMP #13:BNE LINKS
- 750 CPY #100:BPL MREAD:JMP READ:MREAD RTS;ZUR LESEROUTINE
- 760 REVERSE LDA SCREEN,Y;INVERTIEREN
- 770 AND #127:STA SCREEN,Y:RTS
- 780 LINKS CMP #17;CURSOR LINKS:BNE RECHTS:JSR REVERSE:DEY:BNE START
- 790 RECHTS CMP #29;CURSOR RECHTS:BNE CONT6:JSR REVERSE:INY:BNE START
- 800 CONT6 JSR PRIZEI;WERT ANZEIGEN:BNE START:ZEICHHOL LDA #0;TAST.ABFRAGE
- 810 STA $C6:JSR TAST:LDA $277
- 820 CMP #0:BEQ ZEICHHOL:LDY #0:STY $277;TASTATURPUFFERSTART
- 830 CMP #$85;F1 TASTE:BEQ ZEICHHOL
- 840 LDY #64;VERZOEGERUNG REPEATZAEHLER:STY $28B:STY $28C:RTS
- 850 READ JSR REVERSE:LDY #40;PC LESEN:TSX:JSR BYT:STA STACK+6,X
- 860 STA TMP+3:INY:JSR BYT
- 870 STA STACK+5,X:STA TMP+4:INY:INY;SP UEBERLESEN:INY:INY
- 880 LOOP INY;REGISTER LESEN:JSR BYT:STA STACK+1,X:INY:INX
- 890 CPY #56:BNE LOOP
- 900 INY:LDA #0:STA TMP:LOOP1 LDA SCREEN,Y;FLAGS LESEN:AND #%00011111
- 910 CMP #30:ROL TMP
- 920 INY:CPY #65:BNE LOOP1:TSX:LDA TMP:AND #%11111011;I FLAG LOESCHEN
- 930 STA STACK+4,X:JSR DISAS:JSR READPC:JSR DISAS:JMP WAIT
- 940 BYT JSR LBIT;8 BIT ZAHL VON SCREEN HOLEN:ASL:ASL:ASL:ASL:INY:STA TMP
- 950 JSR LBIT:CLC:ADC TMP:RTS
- 960 LBIT LDA SCREEN,Y;1 BYTE VON SCREEN IN HEX:CMP #48:BCS ZAHL:ADC #57
- 970 SEC:ZAHL SBC #48:RTS
- 980 ;BERECHNET ABS. ADRESSEN BEI BRANCHES
- 990 OFFSET LDA COD2:BMI BMINUS
- 1000 CLC;BRANCH VOR:ADC #2:ADC TMP+4:STA TMP1:LDA TMP+3
- 1010 ADC #0:JSR PRBYTE:LDA TMP1:JSR PRBYTE:RTS:;BRANCH RUECK
- 1020 BMINUS EOR #255:SEC:SBC #1:STA TMP
- 1030 LDA TMP+4:SBC TMP:STA TMP1:LDA TMP+3
- 1040 SBC #0:JSR PRBYTE:LDA TMP1:JSR PRBYTE:RTS;ENDE OFFSET
- 1050 ;LAENGE OPCODE
- 1060 ;BERECHNET BEFEHLSLAENGE (1,2 OD. 3 BYTES)
- 1070 ;OPCODE IN AKKU UEBERGEBEN
- 1080 ;IM Y-REG. STEHT DANN BEFEHLSLAENGE
- 1090 LAENGE LDY #1
- 1100 CMP #$20:BEQ LOO1:AND #$9F:BEQ LOO3
- 1110 AND #$1F:CMP #9:BEQ LOO2:CMP #$19
- 1120 BEQ LOO1:AND #$0D:CMP #8:BEQ LOO3
- 1130 AND #8:BEQ LOO2
- 1140 LOO1 INY:LOO2 INY:LOO3 RTS
- 1150 DISAS STY OLDY:STX OLDX;REGISTER RETTEN
- 1160 LDX #20:LDA #" ":CLE1 STA SCREEN+120,X;ZEILE FUER DISAS. LOESCHEN
- 1170 DEX:BNE CLE1
- 1180 ;PC L/H IN TMP+4 / TMP+3:;BELEGT 'RAM' POINTER ZUM LESEN
- 1190 LDA TMP+4:STA PPOIN1+1:STA TMP+6 :LDA TMP+3:STA PPOIN1+2:STA TMP+5
- 1200 INC TMP+6:LDA TMP+6:STA PPOIN2+1:BNE LOO5
- 1210 INC TMP+5:LOO5 LDA TMP+5:STA PPOIN2+2:INC TMP+6
- 1220 LDA TMP+6:STA PPOIN3+1:BNE LOO6
- 1230 INC TMP+5:LOO6 LDA TMP+5:STA PPOIN3+2
- 1240 PPOIN1 LDA $C000:STA COD1;LIEST OPCODES
- 1250 PPOIN2 LDA $C000:STA COD2
- 1260 PPOIN3 LDA $C000:STA COD3
- 1270 LDA COD1:JSR LAENGE:TYA:STA CODEL:TAX:LDY #120;BYTES AB PC AUSGEBEN
- 1280 LDA COD1:JSR PRBYTE:JSR SPACE:DEX
- 1290 BEQ LOO7:LDA COD2:JSR PRBYTE:JSR SPACE
- 1300 DEX:BEQ LOO7:LDA COD3:JSR PRBYTE
- 1310 LOO7 LDY #129:LDA COD1;GIBT OPCODE (3 BUCHSTABEN) AUS
- 1320 CLC:LDA #>TSTART:STA TMP:LDA COD1:ADC COD1:BCC LOO8
- 1330 INC TMP:LOO8 CLC:ADC COD1:BCC LOO9:INC TMP:LOO9 STA OPP+1;POINTER BELEGEN
- 1340 LDA TMP:STA OPP+2:LDX #0:OPP LDA $C000,X:JSR PRIZEI:INX
- 1350 CPX #3:BNE OPP:JSR SPACE
- 1360 LDA CODEL:CMP #2:BPL CODE2:JMP ENDAS
- 1370 CODE2 LDX COD1:LDA TADR,X;ADRESS. FESTSTELLEN:TAX
- 1380 ; '#$','$' OD.'($' AUSGEBEN
- 1390 CPX #6:BMI LOO10:LDA #"(":JSR PRIZEI
- 1400 LOO10 CPX #2:BNE LOO11:LDA #"#"
- 1410 JSR PRIZEI:LOO11 LDA #"$":JSR PRIZEI
- 1420 CPX #1:BPL LOO12:JSR OFFSET:JMP ENDAS
- 1430 LOO12 LDA CODEL;OPERANDEN AUSGEBEN:CMP #3:BEQ CODL3
- 1440 LDA COD2:JSR PRBYTE:JMP LOO13
- 1450 CODL3 LDA COD3:JSR PRBYTE:LDA COD2:JSR PRBYTE
- 1460 LOO13 CPX #4:BMI ENDAS
- 1470 ; ',X',',Y',',X)','),Y' OD. ')' AUSGEBEN
- 1480 BNE LOO14:LDA #",":JSR PRIZEI
- 1490 LDA #"X":JSR PRIZEI:JMP ENDAS
- 1500 LOO14 CPX #5:BNE LOO15
- 1510 LDA #",":JSR PRIZEI:LDA #"Y":JSR PRIZEI:JMP ENDAS
- 1520 LOO15 CPX #6:BNE LOO16:LDA #",":JSR PRIZEI
- 1530 LDA #"X":JSR PRIZEI:LDA #")":JSR PRIZEI:JMP ENDAS
- 1540 LOO16 LDA #")":JSR PRIZEI
- 1550 CPX #8:BEQ ENDAS:LDA #",":JSR PRIZEI
- 1560 LDA #"Y":JSR PRIZEI
- 1570 ENDAS LDY OLDY;REG. HOLEN:LDX OLDX:RTS;ENDE DISAS
- 1580 READPC LDY #120:JSR START;DIS.ZEILE EDIT.:JSR REVERSE:LDY #120
- 1590 ;LIEST BYTES UND SPEICHERT IN RAM
- 1600 JSR BYT:STA COD1:INY:INY:JSR BYT
- 1610 STA COD2:INY:INY:JSR BYT:STA COD3
- 1620 LDA TMP+4:STA PREAD1+1
- 1630 LDA TMP+3:STA PREAD1+2:LDA COD1:PREAD1 STA $C000
- 1640 LDY CODEL:CPY #2:BMI EREAD
- 1650 LDA TMP+4:CLC:ADC #1:STA PREAD2+1
- 1660 LDA TMP+3:ADC #0:STA PREAD2+2
- 1670 LDA COD2:PREAD2 STA $C000
- 1680 CPY #3:BMI EREAD
- 1690 LDA TMP+4:CLC:ADC #2:STA PREAD3+1
- 1700 LDA TMP+3:ADC #0:STA PREAD3+2
- 1710 LDA COD3:PREAD3 STA $C000
- 1720 EREAD RTS;ALLE BYTES GELESEN. ENDE READPC
- 1730 TEXT .ASC " PC SP YR XR AC NV-BDIZC 76543210 "
- 1740 HEX .ASC "0123456789ABCDEF"
- 1750 TMP .BYT 0,0,0,0,0,0,0;ARBEITSVARIABLEN
- 1760 TMP1 .BYT 0
- 1770 OLDY .BYT 0
- 1780 OLDX .BYT 0
- 1790 COD1 .BYT 0:COD2 .BYT 0:COD3 .BYT 0
- 1800 CODEL .BYT 0:DISON .BYT 0
- 1810 *=TSTART:;TAB. OPCODES (L-BYTE TSTART MUSS 0 SEIN)
- 1820 .ASC "BRKORA?????????ORAASL???PHPORAASL"
- 1830 .ASC "??????ORAASL???BPLORA??????"
- 1840 .ASC "???ORAASL???CLCORA?????????"
- 1850 .ASC "ORAASL???JSRAND??????BITAND"
- 1860 .ASC "ROL???PLPANDROL???BITANDROL"
- 1870 .ASC "???BMIAND?????????ANDROL???"
- 1880 .ASC "SECAND?????????ANDROL???RTI"
- 1890 .ASC "EOR?????????EORLSR???PHAEOR"
- 1900 .ASC "LSR???JMPEORLSR???BVCEOR???"
- 1910 .ASC "??????EORLSR???CLIEOR??????"
- 1920 .ASC "???EORLSR???RTSADC?????????"
- 1930 .ASC "ADCROR???PLAADCROR???JMPADC"
- 1940 .ASC "ROR???BVSADC?????????ADCROR"
- 1950 .ASC "???SEIADC?????????ADCROR???"
- 1960 .ASC "???STA??????STYSTASTX???DEY"
- 1970 .ASC "???TXA???STYSTASTX???BCCSTA"
- 1980 .ASC "??????STYSTASTX???TYASTATXS"
- 1990 .ASC "??????STA??????LDYLDALDX???"
- 2000 .ASC "LDYLDALDX???TAYLDATAX???LDY"
- 2010 .ASC "LDALDX???BCSLDA??????LDYLDA"
- 2020 .ASC "LDX???CLVLDATSX???LDYLDALDX"
- 2030 .ASC "???CPYCMP??????CPYCMPDEC???"
- 2040 .ASC "INYCMPDEX???CPYCMPDEC???BNE"
- 2050 .ASC "CMP?????????CMPDEC???CLDCMP"
- 2060 .ASC "?????????CMPDEC???CPXSBC???"
- 2070 .ASC "???CPXSBCINC???INXSBCNOP???"
- 2080 .ASC "CPXSBCINC???BEQSBC?????????"
- 2090 .ASC "SBCINC???SEDSBC?????????SBC"
- 2100 .ASC "INC???"
- 2110 ;TABELLE ADRESSIERUNG (KEINE STANDARDWERTE NUR FUER DISAS)
- 2120 TADR .BYT 1,6,1,1,1,3,3,1,1,2,1,1
- 2130 .BYT 1,3,3,1,0,7,1,1,1,4,4,1,1,5
- 2140 .BYT 1,1,1,4,4,1,3,6,1,1,3,3,3,1
- 2150 .BYT 1,2,1,1,3,3,3,1,0,7,1,1,1,4
- 2160 .BYT 4,1,1,5,1,1,1,4,4,1,1,6,1,1
- 2170 .BYT 1,3,3,1,1,2,1,1,3,3,3,1,0,7
- 2180 .BYT 1,1,1,4,4,1,1,5,1,1,1,4,4,1
- 2190 .BYT 1,6,1,1,1,3,3,1,1,2,1,1,8,3
- 2200 .BYT 3,1,0,7,1,1,1,4,4,1,1,5,1,1,1
- 2210 .BYT 4,4,1,1,6,1,1,3,3,3,1,1,1,1
- 2220 .BYT 1,3,3,3,1,0,7,1,1,4,4,5,1,1
- 2230 .BYT 5,1,1,1,4,1,1,2,6,2,1,3,3,3
- 2240 .BYT 1,1,2,1,1,3,3,3,1,0,7,1,1,4
- 2250 .BYT 4,5,1,1,5,1,1,4,4,5,1,2,6,1
- 2260 .BYT 1,3,3,3,1,1,2,1,1,3,3,3,1,0
- 2270 .BYT 7,1,1,1,4,4,1,1,5,1,1,1,4,4
- 2280 .BYT 1,2,6,1,1,3,3,3,1,1,2,1,1,3
- 2290 .BYT 3,3,1,0,7,1,1,1,4,4,1,1,5,1
- 2300 .BYT 1,1,4,4,1
- 2310 .END
- 2320 END
- 2330 INPUTA:PRINTPEEK(A+51456):GOTO2330
-